2 /*********************************************************************************
3 * SugarCRM is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6 * This program is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Affero General Public License version 3 as published by the
8 * Free Software Foundation with the addition of the following permission added
9 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
18 * You should have received a copy of the GNU Affero General Public License along with
19 * this program; if not, see http://www.gnu.org/licenses or write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26 * The interactive user interfaces in modified source and object code versions
27 * of this program must display Appropriate Legal Notices, as required under
28 * Section 5 of the GNU Affero General Public License version 3.
30 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31 * these Appropriate Legal Notices must retain the display of the "Powered by
32 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33 * technical reasons, the Appropriate Legal Notices must display the words
34 * "Powered by SugarCRM".
35 ********************************************************************************/
38 require_once("include/Expressions/Dependency.php");
39 require_once("include/Expressions/Trigger.php");
40 require_once("include/Expressions/Expression/Parser/Parser.php");
41 require_once("include/Expressions/Actions/ActionFactory.php");
43 class ActionFactoryTest extends Sugar_PHPUnit_Framework_TestCase
45 var $removeCustomDir = false;
47 protected function createCustomAction()
49 $actionContent = <<<EOQ
51 require_once("include/Expressions/Actions/AbstractAction.php");
53 class TestCustomAction extends AbstractAction{
54 function __construct(\$params) { }
55 static function getJavascriptClass() { return ""; }
56 function getJavascriptFire() { return ""; }
57 function fire(&\$target){}
58 function getDefinition() {
60 "action" => \$this->getActionName(),
65 static function getActionName() {
66 return "testCustomAction";
70 if (!is_dir("custom/" . ActionFactory::$action_directory)) {
71 sugar_mkdir("custom/" . ActionFactory::$action_directory, null, true);
72 $this->removeCustomDir = true;
74 file_put_contents("custom/" . ActionFactory::$action_directory . "/testCustomAction.php", $actionContent);
77 protected function removeCustomAction()
79 unlink("custom/" . ActionFactory::$action_directory . "/testCustomAction.php");
80 if ($this->removeCustomDir)
81 unlink("custom/" . ActionFactory::$action_directory);
84 public function testGetNewAction()
86 $sva = ActionFactory::getNewAction('SetValue',
89 'value' => 'strlen($name)'
92 $this->assertType("SetValueAction", $sva);
95 public function testLoadCustomAction()
98 $this->createCustomAction();
99 ActionFactory::buildActionCache(true);
100 $customAction = ActionFactory::getNewAction('testCustomAction', array());
101 $this->assertType("TestCustomAction", $customAction);
102 $this->removeCustomAction();
103 ActionFactory::buildActionCache(true);